# Copyright 2013    Yajie Miao    Carnegie Mellon University

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
# WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
# MERCHANTABLITY OR NON-INFRINGEMENT.
# See the Apache 2 License for the specific language governing permissions and
# limitations under the License.

import theano.tensor as T

def maxout_func(n_out, last_start, pool_size, rectify, lin_output):
    tmp_output = lin_output[:,0:last_start+1:pool_size]
    for i in range(1, pool_size):
        cur = lin_output[:,i:last_start+i+1:pool_size]
        tmp_output = T.maximum(cur, tmp_output)
    if rectify:
        self.tmp_output = T.maximum(0, self.tmp_output)

